The creation and storage of digitized data has proliferated in recent years. Accordingly, techniques and mechanisms that facilitate storage and management of large amounts of digital data are common today. For example, a cluster network environment of nodes may be implemented as a data storage system to facilitate the creation, storage, retrieval, and/or processing of digital data. Such a data storage system may be implemented using a variety of storage architectures, such as a network-attached storage (NAS) environment, a storage area network (SAN), a direct-attached storage environment, and combinations thereof.
A data storage system typically includes different classes of storage containers. Each storage container may include a plurality of sub-containers. A storage container may, for example, be a volume, a physical disk, a Redundant Array of Independent Disks (RAID), or an aggregate (e.g., a plurality of RAID groups). Although the term “disk” often refers to a magnetic storage device, in this context a disk may, for example, be a hard disk drive (HDD) or a solid state drive (SSD) or any other media similarly adapted to store data.
In data storage management, it is necessary to ensure that adequate storage capacity exists to prevent one or more storage containers from running out of storage space. If, for example, one or more containers run out of storage space, client systems and applications utilizing the containers may have to be taken off-line so that additional storage capacity may be provided. It will be appreciated that in a data storage system comprising hundreds or even thousands of containers, the data growth rate may vary significantly from container to container depending on client systems and applications to which the containers are provisioned. Accordingly, it is often difficult to monitor the storage capacity of a large number of containers and to ensure that adequate storage capacity is always provided.
Furthermore, existing storage management applications are not configured to adequately determine the storage capacity of certain classes of containers. Existing applications, for example, do not accurately compute the storage capacity of a dynamically expanding volume which is initially provisioned with a small storage resource but dynamically expands as more data is written to it by allocating additional storage resource up to a maximum allowable size. Existing applications show the initial size and the current size but not the maximum allowable size of a dynamically expanding volume.
Also, existing storage management applications do not accurately compute the storage capacity of a thin-provisioned volume which provides an operating system with a virtual hard disk having a large capacity even though the actual capacity is much smaller. For example, by thin-provisioning volumes, a 2 terabyte virtual hard disk may be provided to the operating system, while only few giga bytes of physical storage is allocated. As data is written to the thin-provisioned volume, the real storage space is allocated on the fly.
Furthermore, existing storage management applications do not provide a comprehensive status of the storage capacity of storage systems. Rather, existing applications only provide isolated views of the storage capacity. For example, existing applications identify containers (e.g., aggregates, volumes, Q-trees, etc.) that are nearly full but do not provide reasons why the containers are running out of space. Also, existing applications often highlight issues that are of lesser significance. For example, an aggregate may be identified as being nearly full because volumes in the aggregate are thickly-provisioned. It will be appreciated that in a thickly-provisioned volume, physical storage is allocated at the time of creation of the thickly-provisioned volume although only a small amount of data may have been written to the volume. Thus, existing applications may identify aggregates comprising thickly-provisioned volumes as being nearly full without pointing out that only a small amount of data has in fact been written to the volumes.
Moreover, existing applications fail to highlight significant issues that may require immediate response. For example, an aggregate that is nearly full in a system that does have spare disks is typically not highlighted. It will be appreciated that a failure to indicate that a system lacks spare disks may result in data corruption or unavailability of an aggregate and its volumes when disk space runs out. Also, a volume that is nearly full and does not have auto-grow enabled are not highlighted, which may require client systems relying on the volume to be taken off-line when storage space runs out.